home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / programming / e / speedtests / byteswap.e < prev    next >
Text File  |  1999-06-14  |  1KB  |  62 lines

  1. OPT PREPROCESS
  2.  
  3. MODULE '*testspeed'
  4. MODULE '*bitmagic'
  5.  
  6. CONST LOTS_OF_TIMES=100000
  7.  
  8. #define def_byteswap(a) (Shl((a AND $00FF),8) OR Shr((a AND $FF00),8))
  9.  
  10. PROC main()
  11.   test({swapproc}, 'Swap bytes using procedure',     LOTS_OF_TIMES)
  12.   test({swapasm},  'Swap bytes using asm procedure', LOTS_OF_TIMES)
  13.   test({swapdef},  'Swap bytes using #define',       LOTS_OF_TIMES)
  14. ENDPROC
  15.  
  16. PROC swapproc()
  17.   proc_byteswap($CAFE)
  18.   proc_byteswap($CAFE)
  19.   proc_byteswap($CAFE)
  20.   proc_byteswap($CAFE)
  21.   proc_byteswap($CAFE)
  22.   proc_byteswap($CAFE)
  23.   proc_byteswap($CAFE)
  24.   proc_byteswap($CAFE)
  25.   proc_byteswap($CAFE)
  26.   proc_byteswap($CAFE)
  27. ENDPROC
  28.  
  29. PROC swapasm()
  30.   pcint($CAFE)
  31.   pcint($CAFE)
  32.   pcint($CAFE)
  33.   pcint($CAFE)
  34.   pcint($CAFE)
  35.   pcint($CAFE)
  36.   pcint($CAFE)
  37.   pcint($CAFE)
  38.   pcint($CAFE)
  39.   pcint($CAFE)
  40. ENDPROC
  41.  
  42. PROC swapdef()
  43.   def_byteswap($CAFE)
  44.   def_byteswap($CAFE)
  45.   def_byteswap($CAFE)
  46.   def_byteswap($CAFE)
  47.   def_byteswap($CAFE)
  48.   def_byteswap($CAFE)
  49.   def_byteswap($CAFE)
  50.   def_byteswap($CAFE)
  51.   def_byteswap($CAFE)
  52.   def_byteswap($CAFE)
  53. ENDPROC
  54.  
  55. PROC proc_byteswap(a)
  56.   DEF hi,lo,ret
  57.   hi:=a AND $FF00
  58.   lo:=a AND $00FF
  59.   ret:=Shl(lo,8) OR Shr(hi,8)
  60. ENDPROC ret
  61.  
  62.